home *** CD-ROM | disk | FTP | other *** search
/ C & C++ Multimedia Cyber Classroom / C and C++ Multimedia Cyber Classroom (Prentice Hall) (1998).iso / src / fig09_11.jar / Ch09 / Fig09_11 / Fig09_11.cpp < prev   
C/C++ Source or Header  |  1997-10-27  |  1KB  |  43 lines

  1. // Fig. 9.11: fig09_11.cpp
  2. // Driver for multiple inheritance example
  3. #include <iostream.h>
  4. #include "base1.h"
  5. #include "base2.h"
  6. #include "derived.h"
  7.  
  8. int main()
  9. {
  10.    Base1 b1( 10 ), *base1Ptr = 0;  // create Base1 object
  11.    Base2 b2( 'Z' ), *base2Ptr = 0; // create Base2 object
  12.    Derived d( 7, 'A', 3.5 );       // create Derived object
  13.  
  14.    // print data members of base class objects
  15.    cout << "Object b1 contains integer " << b1.getData() 
  16.         << "\nObject b2 contains character " << b2.getData()
  17.         << "\nObject d contains:\n" << d << "\n\n";
  18.  
  19.    // print data members of derived class object
  20.    // scope resolution operator resolves getData ambiguity
  21.    cout << "Data members of Derived can be"
  22.         << " accessed individually:"
  23.         << "\n    Integer: " << d.Base1::getData()
  24.         << "\n  Character: " << d.Base2::getData()
  25.         << "\nReal number: " << d.getReal() << "\n\n";
  26.  
  27.    cout << "Derived can be treated as an "
  28.         << "object of either base class:\n";
  29.  
  30.    // treat Derived as a Base1 object
  31.    base1Ptr = &d;
  32.    cout << "base1Ptr->getData() yields "
  33.         << base1Ptr->getData() << '\n';
  34.  
  35.    // treat Derived as a Base2 object
  36.    base2Ptr = &d;
  37.    cout << "base2Ptr->getData() yields "
  38.         << base2Ptr->getData() << endl;
  39.  
  40.    return 0;
  41. }
  42.  
  43.